/*//js后端可以直接运行js代码，不需要打开浏览器运行
// console.log("你好");
// let a = [12, 2.3, "acb"];
// console.log(a);
// for (let i = 0;i < a.length; i++){
//     console.log(a[i]);
// }
// let a = [[1, 2, 3],[4, 5, 6],[7, 8, 9]];
// for (let i = 0; i < a.length; i++){
//     for (let j = 0; j < a[i].length; j++){
//         console.log(a[i][j]);
//     }
// }
// let a = [[[1.1, 1.2, 1.3], [2.1, 2.2, 2.3],[3.1, 3.2, 3.3]]];
// for (let i = 0; i < a.length; i++){
//     for (let j = 0; j < a[i].length; j++){
//         for (let k = 0; k < a[i][j].length; k++){
//             console.log(a[i][j][k]);
//         }
//     }
// }
// let a= [];
// a.push(12,"abc",true);
// console.log(a);
// for (let i = 1; i <21; i++){
//     a.push(i);
// }
// console.log(a);*/


/*// 函数
// 函数 -> 方法
// 创建语法
// function 函数名（形式函数参数···）{
//   ···
// }
// function max(a, b) {
//     if (a < b) {
//         return b;
//     }else {
//         return a;
//     }
// }
// return -> 我要返回出某些内容
// return -> 当返回完内容后该函数就会立马结束
// 函数的使用语法
// 函数名（函数参数（可以不填）···）
// console.log(max(18, 50));
// 这自带库Math中也有一个max函数
// 和上面这个功能是大致
// let x = Math.max(18, 50);
// console.log(x);
// function max(a, b) {
//     return a > b ? a : b;
// }
// console.log(max(18, 50));
// function maxAccount(a, b){
    // typeof 关键字会显示他后面数据的类型
    // 标量类型 -> 标准变量类型
    // 例如: number, string, bool, 函数等
    // "string" == 字符串类型
//     if (typeof a === "string" && typeof b === "string") {
//         return a.length > b.length ? a : b;
//     }else{
//         return "非字符串类型，使用错误!";
//     }
// }
// console.log(maxAccount("was1234", "123456789a"));
// console.log(maxAccount(132, 1234));
// let x = function (a, b){
//     if (typeof a === "string" && typeof b === "string") {
//         return a.length > b.length ? a : b;
//     }else{
//         return "非字符串类型，使用错误!";
//     }
// }
// console.log(x("123", "12345"));*/


/*//let x = ()=>{};// 匿名函数
// function printName(name) {
//     if (typeof name === "string"){
//         console.log("你好",name);
//     }else{
//         console.log("非字符串类型，使用错误!");
//     }
// }
// printName("小明");
// let printName = (name) => {
//     typeof name === "string" ? console.log("你好",name) : console.log("非字符串类型，使用错误!");
// }
// printName("小糖");
// 驼峰命名法
// 常用地方：变量名、函数名、对象名···
//例子：showusername -> showUsername
// 帕斯卡命名法
// 常用地方：类名···
// 例子：showusername -> ShowUserName
// 下划线命名法
// 常用地方：Python、dart、rust编程语言等
// 例子：showusername -> show_user_name
// function a() {
//     return "abc";
// }
// function b() {
//     console.log("abc");
// }
// console.log(a());
// b();
// 箭头函数(js特有的（但不绝对）)
// 该函数如果只有一条代码,可以忽略大括号
// 并且如果要返回内容,也可以省略return关键字
// const max = (a, b) => a > b ? a : b;
// console.log(max(20, 56));
// const showName = (name) => "你好" + name;
// console.log(showName("Jack"));
// const findName = (array) => {
//     for (let i = 0; i < array.length; i++){
//         if (array[i] === "Bob"){
//             return i;
//         }
//     }
//     return "没有找到该名字" 
//     // return：1.返回某些内容 2.结束该函数
// }
// console.log(findName([2, 12, "Bob", true]));
// console.log(findName(["B", 12, 3, true]));


// 数组里自带的indexOf 函数是用来找到指定内容的位置
// 如果可找到的话则返回该内容的位置
// 如果没有找到的话则返回-1
const findName = (array) => 
    array.indexOf("Bob") != -1 ? array.indexOf("Bob") : "没有找到名字";
console.log(findName([1, "Bob", 12, true]));
console.log(findName([1, "B", 12, true]));


// 遍历：访问每个内容
let a = [12,23,true];
for (i = 0; i < a.length; i++) {
    console.log(a[i]);
}
// in: 将a的下标依次赋予给s
for (let s in a){
    console.log(s);
}
// for：将a的内容依次赋予给s
for (let s of a){
    console.log(s);
}

// 对象(onject)
// 创建语法：
// let 对象名 = {
//  键（key）: 值（value）,
//  键（key）: 值（value）,
//  ···
// }
let a = {
    name:"水星",
    size:200000000,
};
console.log(a.name);
console.log(a["name"]);
// 添加键并赋值,如果是原有键就会直接替换上一个的内容
a.color = "blue";
a["color"] = "red";
console.log(a.color);
// 复制上一行的快捷键：shift+Ait+上下左右键


let student = {
    name:"董秀颖",
    age:19,
    gender:"女",
};
// 获取value内容
for (let i in student) {
    console.log(student[i]);
}
// 获取key内容
for (let i in student) {
    console.log(i);
}
// 只获取key内容
for (let i of Object.keys(student)) {
    console.log(i);
}
// 只获取value内容
for (let i of Object.values(student)) {
    console.log(i);
}
// 两个都获取
for (let [k, v] of Object.entries(student)) {
    console.log(k, v);
}
let student = {
    name:"董秀颖",
    age:19,
    gender:"女",
};
let student1 = {
    name:"abc",
    age:16,
    gender:"女",
};
function showObj(obj) {
    for (let [k, v] of Object.entries(obj)) {
        console.log(k, v);
    }
}
showObj(student);
showObj(student1);


let a = [
    {
        name: "小董",
        age: 19,
        gender: "女"
    }, 
    {
        name: "糖糖",
        age: 19,
        gender: "女"
    }
]
const showObj = (objArr) => {
    for (let i = 0; i < objArr.length; i++) {
        for (let [k, v] of Object.entries(objArr[i])) {
            console.log(k, v)
        }
    }
}
showObj(a)


let a = [
    {
        name: "小董",
        age: 19,
        gender: "女"
    }, 
    {
        name: "糖糖",
        age: 19,
        gender: "女"
    }
]
const showObj = (objArr) => {
    for (let i of objArr) {
        for (let s in a) {
            console.log(s, i[a]);
        }
    }
}
showObj(a)

let student1 = {
    name: "小董",
    age: 19,
    gender: "女"
};
let student2 = {
    name: "糖糖",
    age: 19,
    gender: "女"
};
let a = [student1, student2];
let b = [student1, student2];

const showObj = (objArr) => {
    for (let i = 0; i < objArr.length; i++) {
        for (let v of Object.values(objArr[i])) {
            console.log(v);
        }
    }
}
showObj(a);


let student1 = {
    name: "小董",
    age: 19,
    gender: "女",
    email:"124566@qq.com",
    work:function (){
        console.log(this.name, "开始工作");
    },
    stop:function (){
        console.log(this.name, "停止工作");
    }
}
student1.work();
student1.stop();
*/


let juice = {
    name:"依能",
    ml:1000,
    make:function () {
        // ${} 解析符 会解析括号内的内容
        console.log(`制作了${this.name}饮料为${this.ml}ml`);
        // \033[颜色代号m
        // 适用于单双引号里使用
        // 1 -> 加粗; 2 -> 浅色体; 3 -> 斜体; 4 -> 加下划线
        // 31 -> 红色; 32 -> 绿色; 33 -> 黄色; 34 -> 蓝色
        console.log("\033[34m你好\033[0m");
    }    
}
juice.make();
